# encoding: utf-8
# from django.test import TestCase

# Create your tests here.
# import socket
# hostname = socket.gethostname()
# print(hostname)  # DESKTOP-8F829M6本机
# ip = socket.gethostbyname(hostname)
# print(ip)

######################################################################################
######################################################################################
######################################################################################
######################################################################################
# from string import ascii_lowercase
#
# lows = ascii_lowercase
# ups = lows.upper()
#
#
# def kasa(s, k, ok=True):
#     '''
#     凯撒加密 参数：
#     s:需加密的字符串
#     k：密码
#     ok='other'就变成解密了
#     '''
#     k = k % len(lows)  # 密码取mod
#     before = lows + ups
#     after = lows[k:] + lows[:k] + ups[k:] + ups[:k]
#     if ok == True:
#         table = ''.maketrans(before, after)
#     else:
#         table = ''.maketrans(after, before)
#     return s.translate(table)
#
#
# s = '''Created on Sat Jan 30 13:39:20 2021
# @author: yezq'''
# k = 12334343
# sa = kasa(s, k)
# print('原文:\n', s)
# print('加密:\n', sa)
# sb = kasa(sa, k, None)
# print('解密：\n', sb)


######################################################################################
######################################################################################
######################################################################################
######################################################################################


import time

import jwt

# from send_medicine import settings


class JWT_Handler(object):
    def __init__(self):
        pass

    def sun_encode(self, data):
        """加密"""
        # payload 待加密的数据
        token_dict = {
            'iat': time.time(),  # 时间戳
            'name': data
        }
        # headers
        headers = {
            'alg': "HS256",  # 声明所使用的算法
        }
        # 调用jwt库,生成json web token
        """
        这里很奇怪，在本地jwt.encode之后是byte类型的，但是在服务器上是str类型的。
        所以在本地需要encode来将byte类型转为str类型
        """
        # jwt_token = jwt.encode(token_dict,  # payload, 有效载体
        #                        'settings.SECRET_KEY',  # 进行加密签名的密钥
        #                        algorithm="HS256",  # 指明签名算法方式, 默认也是HS256
        #                        headers=headers  # json web token 数据结构包含两部分, payload(有效载体), headers(标头)
        #                        ).decode('utf-8')  # python3 编码后得到 bytes, 再进行解码(指明解码的格式), 得到一个str
        jwt_token = jwt.encode(token_dict,  # payload, 有效载体
                               'settings.SECRET_KEY',  # 进行加密签名的密钥
                               algorithm="HS256",  # 指明签名算法方式, 默认也是HS256
                               headers=headers  # json web token 数据结构包含两部分, payload(有效载体), headers(标头)
                               )  # python3 编码后得到 bytes, 再进行解码(指明解码的格式), 得到一个str

        return jwt_token

    def sun_decode(self, data):
        """解密"""
        try:
            jwt_data = jwt.decode(data, 'settings.SECRET_KEY', algorithms=['HS256'])
            return jwt_data
        except Exception as e:
            pass



test = JWT_Handler()

message = test.sun_encode('aaaaa')
print(message)
print(test.sun_decode(message))